package com.app.ta.shi.xuantian.too;

import com.dtflys.forest.Forest;
import lombok.RequiredArgsConstructor;

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Bai Su utils
 * @author feizns
 * @since 2025/4/18
 */
@RequiredArgsConstructor
public class BaiSuUtils {

    /**
     * API 密钥
     */
    public static final String API_KEY = "B2E8jhQxGfqTvxj4cFyTd69dhwUngKfF";

    /**
     * 应用密钥
     */
    private final String appKey;

    /**
     * 应用程序编号
     */
    private final String appId;

    /**
     * 表单编号
     */
    private final String formId;

    /**
     * 之
     * @return {@link BaiSuUtils }
     */
    public static BaiSuUtils of(String appId, String formId) {
        return new BaiSuUtils(API_KEY, appId, formId);
    }

    public static void main(String[] args) {

        // 创建 SimpleDateFormat 对象，指定日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 获取当前时间
        Date currentDate = new Date();
        // 将当前时间格式化为指定格式的字符串
        String formattedDate = sdf.format(currentDate);

        BaiSuUtils utils = of("59fa0ccaaafcbce94b67717c", "5afed942945415856a6aecbc");
        utils.batchCreate(Arrays.asList(Map.of(
                "_widget_1745898344383", "电表编号"
                , "_widget_1745898344416", "用电区域位置"
                , "_widget_1745898344433", "电表类型"
                , "_widget_1745898344632", "100"
                , "_widget_1745898344482",formattedDate
        )));
    }

    /**
     * Batch 唯一创建
     * @return {@link String }
     */
    public Object batchUniqueCreate(String unique, List<Map<String, Object>> data) {
        return Forest.post(url("batch_unique_create"))
                .addHeader("Authorization", "Bearer " + appKey)
                .addBody("datas", data)
                .addBody("unique", List.of(unique))
                .contentTypeJson()
                .execute();
    }

    /**
     * Batch 唯一创建
     * @return {@link String }
     */
    public Object batchCreate(List<Map<String, Object>> data) {
        return Forest.post(url("batch_data_create"))
                .addHeader("Authorization", "Bearer " + appKey)
                .addBody("datas", data)
                .contentTypeJson()
                .execute();
    }

    /**
     * 网址
     * @param method 方法
     * @return {@link String }
     */
    public String url(String method) {
        return url(appId, formId, method);
    }

    /**
     * 网址
     * @param appId 应用程序编号
     * @param formId 形式编号
     * @param method 方法
     * @return {@link String }
     */
    public static String url(String appId, String formId, String method) {
        return "https://wjsz.online-office.net/openapi/v1/app/%s/entry/%s/%s".formatted(appId, formId, method);
    }

}

